{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ccfb832d-9cbc-40fb-9fd7-02e9ba9d4882",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "# 线性回归\n",
    "\n",
    "## 目录\n",
    "\n",
    "- 上海房价预测问题\n",
    "- 线性回归的从零开始实现\n",
    "- 线性回归的简洁实现"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9ce58d2-70ce-46a0-887e-3ebc8827ca65",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "## 上海房价预测问题"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "536d9a6d-23ed-4c1d-b28a-e7d33e8bf25c",
   "metadata": {},
   "source": [
    "数据采自统计局"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f4e408c7-3b77-4cfe-8c1e-5bd6956c496b",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    Year  Price\n",
      "0   2010  14213\n",
      "1   2011  13448\n",
      "2   2012  13870\n",
      "3   2013  16192\n",
      "4   2014  16415\n",
      "5   2015  21501\n",
      "6   2016  25910\n",
      "7   2017  24866\n",
      "8   2018  28981\n",
      "9   2019  32926\n",
      "10  2020  36741\n",
      "11  2021  40974\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "price_data = {\n",
    "    'Year': [str(y) for y in range(2010, 2022)],\n",
    "    'Price':[14213, 13448, 13870, 16192, 16415, 21501, 25910, 24866, 28981, 32926, 36741, 40974],\n",
    "}\n",
    "\n",
    "price_df = pd.DataFrame(price_data)\n",
    "\n",
    "print(price_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1dd6323f-510b-4964-ba20-8762f637885b",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "首选绘制散点图，观察数据分布特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2e408d58-b1e6-48b7-b71c-da0dd8ca6a1f",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(12000.0, 42000.0)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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ixYtQmxsLHQ6HRRFQe/evfHSSy/h+++/V29TasvgwYNx8OBBTJ8+HV26dEF5eTlat26NESNGYP369Xj99dfrzP7GG2/giy++wIgRI9C6dWuUl5ejS5cumD59On7++WcMGDCgwe8LERERkadRROxcyUPNSkREBLKzs90dg4iIiC5CS9p+N+s9pURERETUNLAoJSIiIiK3Y1FKRERERG7HopSIiIiI3I5FKRERERG5HYtSIiIiInI7FqVERERE5HYsSomIiIjI7ViUEhEREZHbsSglIiIiIrdjUUpEREREbseilIiIiIjcjkUpEREREbkdi1IiIiIicjsWpURERETkdixKiYiIiMjtWJQSERERkduxKCUiIiIit2NRSkRERERux6KUiIiIiNyORSkRERERuR2LUiIiIiJyOxalREREROR2WncHICIiIqpNRKDX67F27Vrk5uYiLCwM8fHx6Nu3r7ujkYuwKCUiIiKPYjAYkJiYiKysLIgIjEYjtFotkpOTERkZiZSUFMTExLg7JjkZD98TERGRxzAYDOjXrx8yMjJQVVUFo9EIADAajaiqqkJGRgbi4uKQnp7u5qTkbCxKiYiIyCOICBITE1FWVgaTyWSzj8lkQllZGRISEho5Hbkai1IiIiLyCHq9HllZWXYLUjOTyYSsrCzo9fpGSkaNgUUpEREReYS1a9dCRBzqKyJITU11cSJqTCxKiYiIyCPk5uaq55DWx2g0Ii8vz8WJqDGxKCUiIiKPEBYWBq3WsYmBtFotQkNDXZyIGhOLUiIiIvII8fHxUBTFob6KomDs2LEuTkSNiUUpEREReYTY2FhERkZCo6m7PNFoNIiMjERsbGwjJaPGwKKUiIiIPIKiKEhJSYGfn5/dwlSj0cDPzw8pKSmNnI5cjUUpEREReYyYmBikpaUhOjoaOp1OPcdUq9VCp9MhOjoaaWlpvKNTM8TbjBIREZFHiYmJgcFggF6vR2pqKvLy8hAaGoqxY8fykH0zxqKUiIiIPFJsbCyL0BaEh++JiIiIyO1YlBIRERGR27EoJSIiIiK3Y1FKRERERG7HopSIiIiI3I5FKRERERG5nccXpXv27MEzzzyDW265Bd27d0dISAi8vb3RoUMH3HbbbVi5ciVExObYLl26QFGUOh+PPPJInevPz89HUlISevToAX9/f7Rp0wZDhgzB8uXLHcq/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nj349ddf7U5TNH78eADA1q1bG7o6IiIijxUbG4vIyEhoNHVvVjUaDSIjIxEbG9tIyYiajgYXpR999BEURcHChQsRFxdXZ99rr70WGo0Ghw4daujqiIiIPJaiKEhJSYGfn5/dwtQ8T2lKSkojpyNqGhpclB48eBCKouCOO+6ot6+Pjw9CQkJ4YjcRETVbMTExSEtLQ3R0NHQ6nXpKm1arhU6nQ3R0NCfOJ6pDgy90KikpQVBQEHx9fR3qX1VVZfOcUyIiouYiJiYGBoMBer0eqampyMvLQ2hoKMaOHctD9kT1aHCVGBYWhlOnTqGkpAQBAQF19j1y5AiKi4vRvXv3hq6OiIioyYiNjWURSnSRGnz4vn///gCAdevW1ds3OTkZiqJg8ODBDV0dERERETVjDS5Kp02bBhHB3//+dxw9etRmHxHBq6++iqVLlwIAZsyY0dDVEREREVEz1uDD98OHD8fUqVPx3//+F3369MHo0aNRUlICAHjllVdw/PhxbNy4ESdOnAAAPP7447jmmmuck5qIiIiImhVFHL1Zrw3V1dV4+umnsWDBAphMpgtPWGPyYBGBRqPBE088gXnz5jk8sTA5X0REBLKzs90dg4iIiC5CS9p+X1JRanb06FF8+OGH2Lt3L06fPo3q6mq0a9cO119/Pe69915ERkY6Iytdgpb0Q01ERNRctKTtt1OKUvJ8LemHmoiIqLloSdvvBl/oRERERETkLA0uSsvKyrBjxw7o9fp6++r1euzYsQPl5eUNXR0RERERNWMNLkpXrlyJoUOHYsWKFfX2fffddzF06FDe75eIiIiIbGpwUZqamgoAmDRpUr19p06dChHBp59+2tDVEREREVEz1uCiNCMjAzqdzqG5R2NjY6HT6ZCRkdHQ1RERERFRM9bgojQnJwfBwcHQaOp/Ci8vLwQHB+P06dMNXR0RERERNWMNLkr9/f1RWFgIo9FYb9+qqioUFhbC29u7oasjIiIiomaswUVpVFQUjEYjvv7663r7btq0CUajEd27d2/o6oiIiIioGWtwUTpq1CiICGbPno2CggK7/fLz8zFnzhwoioI77rijoasjIiIiomaswUXpww8/jHbt2uGXX37B1Vdfjffee8/inNHTp0/jP//5D6655hr88ssvaNu2LWbNmuWU0ERERETUvFzSbUbT0tJw66234o8//oCiKAAA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/99++83m9FC7du3CwoULsWfPHhQUFKBt27YYOnQokpKS6r1IyGg0YsmSJfj4449x+PBhmEwmdOvWDePHj8ecOXPqvGMTcOHc0VdffRUbNmzA6dOnERQUhD59+uCRRx7BbbfdVu9rWr9+Pd5++23s378fRUVFCA8Px8iRI/Hkk0/i8ssvr3d8TS3ph5qIiKi5aEnbb48tSsm5WtIPNRERUXPRkrbfHn2hExERERG1DCxKiYiIiMjtWJQSERERkduxKCUiIiIit2NRSkRERERux6KUiIiIiNyORSkRERERuR2LUiIiIiJyOxalREREROR2LEqJiIiIyO1YlBIRERGR27EoJSIiIiK3Y1FKRERERG7HopSIiIiI3I5FKRERERG5HYtSIiIiInI7FqVERERE5HYsSomIiIjI7ViUEhEREZHbsSglIiIiIrdjUUpEREREbseilIiIiIjcjkUpEREREbkdi1IiIiIicjsWpURERETkdixKiYiIiMjtWJQSERERkdtp3R2AiOhSiQj0ej3Wrl2L3NxchIWFIT4+Hn379nV3NCIichCLUiJq0gwGAxITE5GVlQURgdFohFarRXJyMiIjI5GSkoKYmBh3xyQionqwKCWiOnnyXkiDwYB+/fqhrKwMJpNJXW40GgEAGRkZiIuLQ1paGgtTIiIPp4iIuDsEuV5ERASys7PdHYOaGHt7IRVFcfteSBFB7969kZGRYVGQ1qbRaBAdHQ2DwdCI6YiInKMlbb95oRMR2WTeC5mRkYGqqip176PRaERVVZW6FzI9Pd0t+fR6PbKysuosSAHAZDIhKysLer2+kZIREVFDsCglIisigsTERKvD4jWZTCaUlZUhISGhkdNdsHbtWjh6oEdEkJqa6uJERER0KViUEpGVprAXMjc3V917Wx+j0Yi8vDwXJyIiokvBopSIrDSFvZBhYWHQah27VlOr1SI0NNTFiYiI6FKwKCUiK01hL2R8fDwURXGor6IoGDt2rIsTERHRpWBRSkRWmsJeyNjYWERGRkKjqftjTKPRIDIyErGxsY2UjIiIGoJFKRFZaQp7IRVFQUpKCvz8/OwWphqNBn5+fkhJSWnkdEREdLFYlBKRlaayFzImJgZpaWmIjo6GTqdT9+5qtVrodDpER0dz4nwioiaCk+e3EC1p8l1yjvT0dMTFxdmdFsq8F9JTij69Xo/U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7qJeG/eU0iWbPXu2uyPUixmdgxmdgxmdgxmdgxmdo7EydujQAYsWLQIAZGdnQ1EUvP/++wgICAAAvP/++wCAe++912ZBCgDjxo2Dj48PCgoK8P333zu87q5duyImJgYigj179tjtN3ny5IsuSAHuKSUiIiJqcq655hr8+OOPGD16ND777DN1+RVXXIEjR44gJCQEvr6+dsfn5ubCZDIhJSUF48ePt2hbt24dli9fju+//x5nz55FWVmZ1fh//etfmDt3rsUy857STz75BImJiRf9mrQXPYKIiIiI3CokJMTiX7PTp08DAAoLC1FYWFjv85SWlqr/r66uxoQJE7B69Wp1mU6nQ5s2bdRD/AUFBaiqqkJJSYnd52zobD88fE9ERETUTFRXVwMAli9fDhGp93HvvfeqY9977z2sXr0aXl5eeP755/Hrr7+ioqIC+fn5yMnJQU5ODuLi4gAAdR1o9/LyalB27iklIiIiaibatWuH48eP4/jx4xc9NiUlBQAwdepUPPfcczb7nDlz5pLy1YV7SomIiIiaieuvvx4AsH79+osee+LECQAXzle15ffff8evv/7a8HD1YFFKRERE1Ezcf//9AIC9e/fik08+qbPvH3/8YfG1+fzUn3/+2Wb/p59+us7D9peKRSkRERFRM3HTTTchISEBwIWpmZ599lmcPHlSbS8uLsbWrVsxdepUDBo0yGLsLbfcAgB499138f7776OyshIAcPz4cUyZMgWffPIJWrdu7bLsLEqJiDyAyWRydwSHmC+O8ETV1dVWe348mae+j9T0ffDBB7j77rthNBrx0ksvISIiAiEhIWjVqhWCg4MxfPhwvPfee6ioqLAYN2fOHHTv3h1GoxEPPPAA/P390bp1a3Tu3BnLli3Diy++iCuvvNJluVmUktOZN67mD9zaX9PFqf0+ehLzVZ5mnpjRzNN//jQajUe/f3l5ecjLy4OiKOpchJ7mhRdewBtvvOHuGA7z1PfRzJM/e7idqZufnx9WrlyJzZs34+6778bll1+OiooKlJeXo1OnTrj11luRnJyMb7/91mJc69atsXfvXsycOROdOnWCRqOBTqfDiBEj8OWXX+KZZ55xaW5Onk8uYTKZkJeXh1atWsHb2xsmkwkajUZtM/+fHFNdXa1OseFp719FRYV6uzk/Pz8AFzYMnrDBzcnJweHDhzFw4EBo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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.size'] = 22\n",
    "\n",
    "fig = plt.figure(figsize=(8, 6), dpi=80)\n",
    "ax = fig.add_subplot(111)\n",
    "ax.plot(price_df.index, price_data['Price'], 'ko', markersize=10)\n",
    "ax.set_xlabel(\"Year\")\n",
    "ax.set_xticks(price_df.index)\n",
    "ax.set_xticklabels(price_data['Year'], rotation=60)\n",
    "ax.xaxis.set_label_coords(1.05, 0.015)\n",
    "ax.set_ylabel(\"Price\")\n",
    "ax.set_ylim(12000, 42000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d94511c-d2ac-4f74-9820-08bd3dd41554",
   "metadata": {},
   "source": [
    "从图形上看，房价大致与年份成线性关系，特别是2017年-2021年间。\n",
    "\n",
    "因此，选用线性回归模型进行预测大体上是合理的。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e59521ef-f904-4d6d-b098-7f97f539151c",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "### 最小二乘解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2e118155-96e6-4a04-beef-d838da36010d",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n",
       "   \"http://www.w3.org/TR/html4/strict.dtd\">\n",
       "<!--\n",
       "generated by Pygments <https://pygments.org/>\n",
       "Copyright 2006-2022 by the Pygments team.\n",
       "Licensed under the BSD license, see LICENSE for details.\n",
       "-->\n",
       "<html>\n",
       "<head>\n",
       "  <title></title>\n",
       "  <meta http-equiv=\"content-type\" content=\"text/html; charset=None\">\n",
       "  <style type=\"text/css\">\n",
       "/*\n",
       "generated by Pygments <https://pygments.org/>\n",
       "Copyright 2006-2022 by the Pygments team.\n",
       "Licensed under the BSD license, see LICENSE for details.\n",
       "*/\n",
       "pre { line-height: 125%; }\n",
       "td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n",
       "span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n",
       "td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n",
       "span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n",
       "body .hll { background-color: #ffffcc }\n",
       "body { background: #f8f8f8; }\n",
       "body .c { color: #3D7B7B; font-style: italic } /* Comment */\n",
       "body .err { border: 1px solid #FF0000 } /* Error */\n",
       "body .k { color: #008000; font-weight: bold } /* Keyword */\n",
       "body .o { color: #666666 } /* Operator */\n",
       "body .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */\n",
       "body .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */\n",
       "body .cp { color: #9C6500 } /* Comment.Preproc */\n",
       "body .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */\n",
       "body .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */\n",
       "body .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */\n",
       "body .gd { color: #A00000 } /* Generic.Deleted */\n",
       "body .ge { font-style: italic } /* Generic.Emph */\n",
       "body .gr { color: #E40000 } /* Generic.Error */\n",
       "body .gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
       "body .gi { color: #008400 } /* Generic.Inserted */\n",
       "body .go { color: #717171 } /* Generic.Output */\n",
       "body .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
       "body .gs { font-weight: bold } /* Generic.Strong */\n",
       "body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
       "body .gt { color: #0044DD } /* Generic.Traceback */\n",
       "body .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
       "body .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
       "body .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
       "body .kp { color: #008000 } /* Keyword.Pseudo */\n",
       "body .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
       "body .kt { color: #B00040 } /* Keyword.Type */\n",
       "body .m { color: #666666 } /* Literal.Number */\n",
       "body .s { color: #BA2121 } /* Literal.String */\n",
       "body .na { color: #687822 } /* Name.Attribute */\n",
       "body .nb { color: #008000 } /* Name.Builtin */\n",
       "body .nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
       "body .no { color: #880000 } /* Name.Constant */\n",
       "body .nd { color: #AA22FF } /* Name.Decorator */\n",
       "body .ni { color: #717171; font-weight: bold } /* Name.Entity */\n",
       "body .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */\n",
       "body .nf { color: #0000FF } /* Name.Function */\n",
       "body .nl { color: #767600 } /* Name.Label */\n",
       "body .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
       "body .nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
       "body .nv { color: #19177C } /* Name.Variable */\n",
       "body .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
       "body .w { color: #bbbbbb } /* Text.Whitespace */\n",
       "body .mb { color: #666666 } /* Literal.Number.Bin */\n",
       "body .mf { color: #666666 } /* Literal.Number.Float */\n",
       "body .mh { color: #666666 } /* Literal.Number.Hex */\n",
       "body .mi { color: #666666 } /* Literal.Number.Integer */\n",
       "body .mo { color: #666666 } /* Literal.Number.Oct */\n",
       "body .sa { color: #BA2121 } /* Literal.String.Affix */\n",
       "body .sb { color: #BA2121 } /* Literal.String.Backtick */\n",
       "body .sc { color: #BA2121 } /* Literal.String.Char */\n",
       "body .dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
       "body .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
       "body .s2 { color: #BA2121 } /* Literal.String.Double */\n",
       "body .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */\n",
       "body .sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
       "body .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */\n",
       "body .sx { color: #008000 } /* Literal.String.Other */\n",
       "body .sr { color: #A45A77 } /* Literal.String.Regex */\n",
       "body .s1 { color: #BA2121 } /* Literal.String.Single */\n",
       "body .ss { color: #19177C } /* Literal.String.Symbol */\n",
       "body .bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
       "body .fm { color: #0000FF } /* Name.Function.Magic */\n",
       "body .vc { color: #19177C } /* Name.Variable.Class */\n",
       "body .vg { color: #19177C } /* Name.Variable.Global */\n",
       "body .vi { color: #19177C } /* Name.Variable.Instance */\n",
       "body .vm { color: #19177C } /* Name.Variable.Magic */\n",
       "body .il { color: #666666 } /* Literal.Number.Integer.Long */\n",
       "\n",
       "  </style>\n",
       "</head>\n",
       "<body>\n",
       "<h2></h2>\n",
       "\n",
       "<div class=\"highlight\"><pre><span></span><span class=\"k\">class</span> <span class=\"nc\">LinearRegressionLS</span><span class=\"p\">(</span><span class=\"n\">LinearRegression</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;</span>\n",
       "<span class=\"sd\">    solve linear regression problem via least squares</span>\n",
       "<span class=\"sd\">    &quot;&quot;&quot;</span>\n",
       "    <span class=\"n\">X</span><span class=\"p\">:</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span>\n",
       "    <span class=\"n\">Y</span><span class=\"p\">:</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span>\n",
       "    <span class=\"n\">w</span><span class=\"p\">:</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span>\n",
       "    \n",
       "    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">ylist</span><span class=\"p\">):</span>\n",
       "        <span class=\"n\">num_data</span> <span class=\"o\">=</span> <span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">ylist</span><span class=\"p\">)</span>\n",
       "        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">X</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">homogeneous</span><span class=\"p\">([</span><span class=\"n\">x</span> <span class=\"k\">for</span> <span class=\"n\">x</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"n\">num_data</span><span class=\"p\">)])</span>\n",
       "        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">Y</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span><span class=\"p\">(</span><span class=\"n\">ylist</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"n\">num_data</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n",
       "        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">random</span><span class=\"o\">.</span><span class=\"n\">rand</span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n",
       "        \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">homogeneous</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">xlist</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; build homogeneous coordinates &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "    \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">linout</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">xlist</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; linear output for given data &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "    \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">loss_sq</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">X</span><span class=\"p\">,</span> <span class=\"n\">Y</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; loss function: (half) sum of square errors &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "        \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">solve</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">lr</span><span class=\"p\">,</span> <span class=\"n\">nepoch</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; form normal equation &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "</pre></div>\n",
       "</body>\n",
       "</html>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import sys\n",
    "sys.path.insert(1, '../')\n",
    "from utils.utils import *\n",
    "from LinearRegression_2 import *\n",
    "\n",
    "\n",
    "psource(LinearRegressionLS)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be5afa50-d1e3-4519-ae98-300d5f526077",
   "metadata": {},
   "source": [
    "#### 实现要点"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ca886ab0-47e1-4f43-a5e6-4c8b908666b4",
   "metadata": {},
   "source": [
    "```py\n",
    "def linout(self, xlist):\n",
    "    \"\"\" linear output for given data \"\"\"\n",
    "    return 自变量 * 权重 + 偏置\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6feb8387-9f9d-40b3-90fe-a468eb7d6a76",
   "metadata": {},
   "source": [
    "```py\n",
    "def homogeneous(self, xlist):\n",
    "    \"\"\" build homogeneous coordinates \"\"\"\n",
    "    xlist 转换成列向量\n",
    "    return xlist + 全是1的列向量\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6207cb3b-c29e-4696-bb16-cdf810bd27f3",
   "metadata": {},
   "source": [
    "```py\n",
    "def loss_sq(self, X, Y):\n",
    "    \"\"\" loss function: (half) sum of square errors \"\"\"\n",
    "    return （(预测值 - 真实值）的平方）求和后除以2\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9aaac662-d290-43af-8375-c173216ba30e",
   "metadata": {},
   "source": [
    "```py\n",
    "def solve(self, lr, nepoch):\n",
    "    \"\"\" form normal equation \"\"\"\n",
    "    XtX = X转置 * X\n",
    "    XtY = X转置 * Y\n",
    "    权重W = XtX求逆 * XtY\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ef5e483-6592-4991-80f5-1a3b4ff007c8",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "### 梯度下降法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e6589f47-5922-42c8-8221-c0c34347d021",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n",
       "   \"http://www.w3.org/TR/html4/strict.dtd\">\n",
       "<!--\n",
       "generated by Pygments <https://pygments.org/>\n",
       "Copyright 2006-2022 by the Pygments team.\n",
       "Licensed under the BSD license, see LICENSE for details.\n",
       "-->\n",
       "<html>\n",
       "<head>\n",
       "  <title></title>\n",
       "  <meta http-equiv=\"content-type\" content=\"text/html; charset=None\">\n",
       "  <style type=\"text/css\">\n",
       "/*\n",
       "generated by Pygments <https://pygments.org/>\n",
       "Copyright 2006-2022 by the Pygments team.\n",
       "Licensed under the BSD license, see LICENSE for details.\n",
       "*/\n",
       "pre { line-height: 125%; }\n",
       "td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n",
       "span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n",
       "td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n",
       "span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n",
       "body .hll { background-color: #ffffcc }\n",
       "body { background: #f8f8f8; }\n",
       "body .c { color: #3D7B7B; font-style: italic } /* Comment */\n",
       "body .err { border: 1px solid #FF0000 } /* Error */\n",
       "body .k { color: #008000; font-weight: bold } /* Keyword */\n",
       "body .o { color: #666666 } /* Operator */\n",
       "body .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */\n",
       "body .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */\n",
       "body .cp { color: #9C6500 } /* Comment.Preproc */\n",
       "body .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */\n",
       "body .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */\n",
       "body .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */\n",
       "body .gd { color: #A00000 } /* Generic.Deleted */\n",
       "body .ge { font-style: italic } /* Generic.Emph */\n",
       "body .gr { color: #E40000 } /* Generic.Error */\n",
       "body .gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
       "body .gi { color: #008400 } /* Generic.Inserted */\n",
       "body .go { color: #717171 } /* Generic.Output */\n",
       "body .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
       "body .gs { font-weight: bold } /* Generic.Strong */\n",
       "body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
       "body .gt { color: #0044DD } /* Generic.Traceback */\n",
       "body .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
       "body .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
       "body .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
       "body .kp { color: #008000 } /* Keyword.Pseudo */\n",
       "body .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
       "body .kt { color: #B00040 } /* Keyword.Type */\n",
       "body .m { color: #666666 } /* Literal.Number */\n",
       "body .s { color: #BA2121 } /* Literal.String */\n",
       "body .na { color: #687822 } /* Name.Attribute */\n",
       "body .nb { color: #008000 } /* Name.Builtin */\n",
       "body .nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
       "body .no { color: #880000 } /* Name.Constant */\n",
       "body .nd { color: #AA22FF } /* Name.Decorator */\n",
       "body .ni { color: #717171; font-weight: bold } /* Name.Entity */\n",
       "body .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */\n",
       "body .nf { color: #0000FF } /* Name.Function */\n",
       "body .nl { color: #767600 } /* Name.Label */\n",
       "body .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
       "body .nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
       "body .nv { color: #19177C } /* Name.Variable */\n",
       "body .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
       "body .w { color: #bbbbbb } /* Text.Whitespace */\n",
       "body .mb { color: #666666 } /* Literal.Number.Bin */\n",
       "body .mf { color: #666666 } /* Literal.Number.Float */\n",
       "body .mh { color: #666666 } /* Literal.Number.Hex */\n",
       "body .mi { color: #666666 } /* Literal.Number.Integer */\n",
       "body .mo { color: #666666 } /* Literal.Number.Oct */\n",
       "body .sa { color: #BA2121 } /* Literal.String.Affix */\n",
       "body .sb { color: #BA2121 } /* Literal.String.Backtick */\n",
       "body .sc { color: #BA2121 } /* Literal.String.Char */\n",
       "body .dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
       "body .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
       "body .s2 { color: #BA2121 } /* Literal.String.Double */\n",
       "body .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */\n",
       "body .sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
       "body .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */\n",
       "body .sx { color: #008000 } /* Literal.String.Other */\n",
       "body .sr { color: #A45A77 } /* Literal.String.Regex */\n",
       "body .s1 { color: #BA2121 } /* Literal.String.Single */\n",
       "body .ss { color: #19177C } /* Literal.String.Symbol */\n",
       "body .bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
       "body .fm { color: #0000FF } /* Name.Function.Magic */\n",
       "body .vc { color: #19177C } /* Name.Variable.Class */\n",
       "body .vg { color: #19177C } /* Name.Variable.Global */\n",
       "body .vi { color: #19177C } /* Name.Variable.Instance */\n",
       "body .vm { color: #19177C } /* Name.Variable.Magic */\n",
       "body .il { color: #666666 } /* Literal.Number.Integer.Long */\n",
       "\n",
       "  </style>\n",
       "</head>\n",
       "<body>\n",
       "<h2></h2>\n",
       "\n",
       "<div class=\"highlight\"><pre><span></span><span class=\"k\">class</span> <span class=\"nc\">LinearRegressionGD1</span><span class=\"p\">(</span><span class=\"n\">LinearRegression</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;</span>\n",
       "<span class=\"sd\">    solve linear regression problem via gradient descent,</span>\n",
       "<span class=\"sd\">    using single weight vector: homogeneous coordinates</span>\n",
       "<span class=\"sd\">    &quot;&quot;&quot;</span>\n",
       "    <span class=\"n\">X</span><span class=\"p\">:</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span>\n",
       "    <span class=\"n\">Y</span><span class=\"p\">:</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span>\n",
       "    <span class=\"n\">w</span><span class=\"p\">:</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span>\n",
       "    \n",
       "    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">ylist</span><span class=\"p\">):</span>\n",
       "        <span class=\"n\">num_data</span> <span class=\"o\">=</span> <span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">ylist</span><span class=\"p\">)</span>\n",
       "        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">X</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">homogeneous</span><span class=\"p\">([</span><span class=\"n\">x</span> <span class=\"k\">for</span> <span class=\"n\">x</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"n\">num_data</span><span class=\"p\">)])</span>\n",
       "        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">Y</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">array</span><span class=\"p\">(</span><span class=\"n\">ylist</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">reshape</span><span class=\"p\">(</span><span class=\"n\">num_data</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n",
       "        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">np</span><span class=\"o\">.</span><span class=\"n\">random</span><span class=\"o\">.</span><span class=\"n\">rand</span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n",
       "        \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">homogeneous</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">xlist</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; build homogeneous coordinates &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "    \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">linout</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">xlist</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; linear output for given data &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "    \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">loss_sq</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">X</span><span class=\"p\">,</span> <span class=\"n\">Y</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; loss function: (half) sum of square errors &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "\n",
       "    <span class=\"k\">def</span> <span class=\"nf\">gd</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">lr</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; gradient descent update &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">raise</span> <span class=\"ne\">NotImplementedError</span>\n",
       "        \n",
       "    <span class=\"k\">def</span> <span class=\"nf\">solve</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">lr</span><span class=\"p\">,</span> <span class=\"n\">nepoch</span><span class=\"p\">):</span>\n",
       "<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot; iterative solver &quot;&quot;&quot;</span>\n",
       "        <span class=\"k\">for</span> <span class=\"n\">epoch</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"n\">num_epochs</span><span class=\"p\">):</span>\n",
       "            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">gd</span><span class=\"p\">(</span><span class=\"n\">lr</span><span class=\"p\">)</span>\n",
       "            <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"sa\">f</span><span class=\"s1\">&#39;epoch </span><span class=\"si\">{</span><span class=\"n\">epoch</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"si\">}</span><span class=\"s1\">, loss </span><span class=\"si\">{</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">loss_sq</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">X</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">Y</span><span class=\"p\">)</span><span class=\"si\">}</span><span class=\"s1\">&#39;</span><span class=\"p\">)</span>\n",
       "</pre></div>\n",
       "</body>\n",
       "</html>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "psource(LinearRegressionGD1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b4ae99c-d68c-451b-836e-edb463ffea02",
   "metadata": {},
   "source": [
    "#### 实现要点"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "910185b9-0fd7-4911-af7a-9c803bb2c44a",
   "metadata": {},
   "source": [
    "```py\n",
    "def gd(self, lr):\n",
    "    \"\"\" gradient descent update \"\"\"\n",
    "    def gradient(Y_hat, Y, X):\n",
    "        return （(预测值 - 真实值Y） * 自变量X）求和\n",
    "\n",
    "    预测值 = linout(X)\n",
    "    梯度值 = gradient(预测值, Y, X)\n",
    "    梯度下降更新：权重W -= 学习率lr * 梯度值\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d4845484-98dc-40f1-8ffe-0c31580f1970",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "### 学习率测试\n",
    "\n",
    "学习率的取值可以决定优化过程是否收敛。\n",
    "\n",
    "- 尝试将学习率改成$0.03$并重新运行，观察误差的变化并解释原因"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a2c6a000-43ee-4d5c-bf31-1bdd642f9c6f",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "## 线性回归的从零开始实现"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "939eb9d6-7b43-4703-94a5-4d9488df3c05",
   "metadata": {},
   "source": [
    "我们将从零开始实现整个方法，\n",
    "包括数据流水线、模型、损失函数和小批量随机梯度下降优化器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "de28883e-7e4d-45bf-b7fa-ce618d1b131b",
   "metadata": {
    "origin_pos": 2,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import random\n",
    "import torch\n",
    "from d2l import torch as d2l"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20bb6de7-a972-4798-b521-c05b7a6f3e43",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "根据带有噪声的线性模型构造一个人造数据集。\n",
    "我们使用线性模型参数$\\mathbf{w} = [2, -3.4]^\\top$、$b = 4.2$\n",
    "和噪声项$\\epsilon$生成数据集及其标签：\n",
    "\n",
    "$$\\mathbf{y}= \\mathbf{X} \\mathbf{w} + b + \\mathbf\\epsilon$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e26dcefc-d894-4e45-9ae2-e1f5004d0645",
   "metadata": {
    "origin_pos": 7,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "def synthetic_data(w, b, num_examples):  \n",
    "    \"\"\"生成y=Xw+b+噪声\"\"\"\n",
    "    X = torch.normal(0, 1, (num_examples, len(w)))\n",
    "    y = torch.matmul(X, w) + b\n",
    "    y += torch.normal(0, 0.01, y.shape)\n",
    "    return X, y.reshape((-1, 1))\n",
    "\n",
    "true_w = torch.tensor([2, -3.4])\n",
    "true_b = 4.2\n",
    "features, labels = synthetic_data(true_w, true_b, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54118bf5-96e2-412c-8ea1-4d17ff07389a",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "`features`中的每一行都包含一个二维数据样本，\n",
    "`labels`中的每一行都包含一维标签值（一个标量）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "25b8aaf8-9e8e-4ec6-9fb2-bd24587e629a",
   "metadata": {
    "origin_pos": 9,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "features: tensor([-1.9279, -0.3628]) \n",
      "label: tensor([1.5922])\n"
     ]
    }
   ],
   "source": [
    "print('features:', features[0],'\\nlabel:', labels[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "cf24318d-203e-47b6-a508-47fc5cb38403",
   "metadata": {
    "origin_pos": 11,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"237.804688pt\" height=\"169.678125pt\" viewBox=\"0 0 237.804688 169.678125\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n",
       " <metadata>\n",
       "  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
       "   <cc:Work>\n",
       "    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
       "    <dc:date>2023-02-26T14:01:17.224479</dc:date>\n",
       "    <dc:format>image/svg+xml</dc:format>\n",
       "    <dc:creator>\n",
       "     <cc:Agent>\n",
       "      <dc:title>Matplotlib v3.5.1, https://matplotlib.org/</dc:title>\n",
       "     </cc:Agent>\n",
       "    </dc:creator>\n",
       "   </cc:Work>\n",
       "  </rdf:RDF>\n",
       " </metadata>\n",
       " <defs>\n",
       "  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n",
       " </defs>\n",
       " <g id=\"figure_1\">\n",
       "  <g id=\"patch_1\">\n",
       "   <path d=\"M 0 169.678125 \n",
       "L 237.804688 169.678125 \n",
       "L 237.804688 0 \n",
       "L 0 0 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "  </g>\n",
       "  <g id=\"axes_1\">\n",
       "   <g id=\"patch_2\">\n",
       "    <path d=\"M 35.304688 145.8 \n",
       "L 230.604688 145.8 \n",
       "L 230.604688 7.2 \n",
       "L 35.304688 7.2 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "   </g>\n",
       "   <g id=\"PathCollection_1\">\n",
       "    <defs>\n",
       "     <path id=\"m1e032836a3\" d=\"M 0 0.5 \n",
       "C 0.132602 0.5 0.25979 0.447317 0.353553 0.353553 \n",
       "C 0.447317 0.25979 0.5 0.132602 0.5 0 \n",
       "C 0.5 -0.132602 0.447317 -0.25979 0.353553 -0.353553 \n",
       "C 0.25979 -0.447317 0.132602 -0.5 0 -0.5 \n",
       "C -0.132602 -0.5 -0.25979 -0.447317 -0.353553 -0.353553 \n",
       "C -0.447317 -0.25979 -0.5 -0.132602 -0.5 0 \n",
       "C -0.5 0.132602 -0.447317 0.25979 -0.353553 0.353553 \n",
       "C -0.25979 0.447317 -0.132602 0.5 0 0.5 \n",
       "z\n",
       "\" style=\"stroke: #1f77b4\"/>\n",
       "    </defs>\n",
       "    <g clip-path=\"url(#p21cb41e582)\">\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.968431\" y=\"87.4323\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.897976\" y=\"73.037584\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.366791\" y=\"64.05968\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.874732\" y=\"73.822498\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.046006\" y=\"67.032803\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.137997\" y=\"94.750715\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.581815\" y=\"68.148313\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.832644\" y=\"72.312105\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.867542\" y=\"89.135146\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"172.252555\" y=\"111.896637\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.94049\" y=\"50.926921\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.943392\" y=\"95.004777\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"174.886601\" y=\"99.588956\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.126723\" y=\"104.424966\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.152366\" y=\"72.712024\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.020483\" y=\"80.679913\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.076078\" y=\"90.75974\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.793357\" y=\"74.31602\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.56052\" y=\"80.831469\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.473233\" y=\"76.308336\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.418761\" y=\"72.793941\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.798123\" y=\"83.053261\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"64.286321\" y=\"24.644675\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.052688\" y=\"80.002297\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.843278\" y=\"68.938672\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.185801\" y=\"37.760795\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.576862\" y=\"78.705377\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.00581\" y=\"71.843637\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.47642\" y=\"70.31762\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.878471\" y=\"67.451254\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"161.813058\" y=\"91.051743\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"159.517722\" y=\"81.80432\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"97.431653\" y=\"33.21788\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"94.550416\" y=\"21.303659\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"170.771916\" y=\"114.041162\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.939317\" y=\"40.001224\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.268661\" y=\"60.910723\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.607175\" y=\"60.736087\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.453092\" y=\"73.154014\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"174.816937\" y=\"110.143516\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.292594\" y=\"58.39129\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.366041\" y=\"69.429399\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.871401\" y=\"80.4619\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.225667\" y=\"95.450753\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.301265\" y=\"63.750895\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.507222\" y=\"41.614353\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.505219\" y=\"52.773617\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.195325\" y=\"56.096577\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.474317\" y=\"65.504212\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"171.377162\" y=\"91.75472\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.04177\" y=\"89.809904\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.213559\" y=\"54.102897\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.958868\" y=\"68.473353\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.899071\" y=\"60.40149\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.667452\" y=\"73.157725\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.474695\" y=\"88.347455\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.398517\" y=\"65.974677\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.347573\" y=\"64.565253\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.544084\" y=\"41.082781\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.176532\" y=\"57.793053\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.385485\" y=\"53.419728\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.494067\" y=\"80.754856\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.236996\" y=\"81.677896\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.220285\" y=\"64.828126\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.051906\" y=\"79.294219\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.991041\" y=\"80.820514\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.661075\" y=\"70.69422\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.973427\" y=\"78.785792\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"161.384048\" y=\"108.712276\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"188.117474\" y=\"115.067067\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.814104\" y=\"65.757204\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.739513\" y=\"68.096717\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"183.697682\" y=\"85.744009\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.793142\" y=\"79.938455\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.878554\" y=\"71.665582\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.888502\" y=\"76.889981\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.425007\" y=\"39.150492\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.654535\" y=\"59.255303\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.780311\" y=\"50.971798\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.328934\" y=\"52.147966\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.685448\" y=\"61.20761\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.83993\" y=\"78.438493\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.268413\" y=\"59.911237\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"161.067241\" y=\"90.677306\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"93.424782\" y=\"38.405201\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.534663\" y=\"75.79565\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"104.723834\" y=\"35.962792\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.895022\" y=\"56.408383\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.563809\" y=\"89.781475\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.160739\" y=\"71.966106\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.749316\" y=\"59.75069\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.629469\" y=\"93.634884\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.900071\" y=\"77.015622\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"157.310594\" y=\"72.622433\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.95525\" y=\"89.905688\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.747024\" y=\"77.929111\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.353688\" y=\"73.523544\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"91.181404\" y=\"49.971149\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.757509\" y=\"81.059338\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"100.284982\" y=\"37.999143\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.024689\" y=\"47.222493\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.989912\" y=\"37.303581\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.059222\" y=\"68.271384\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.420004\" y=\"79.321818\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.764276\" y=\"69.117763\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.486123\" y=\"63.954136\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.729303\" y=\"62.528864\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.964706\" y=\"63.884099\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.882391\" y=\"79.393569\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"80.170361\" y=\"30.42343\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"101.380627\" y=\"67.842503\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"89.070839\" y=\"52.82444\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.204388\" y=\"54.189537\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.128274\" y=\"100.272915\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.55665\" y=\"83.914917\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.183079\" y=\"78.979246\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.461803\" y=\"61.666947\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"174.668537\" y=\"106.480589\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.56528\" y=\"58.642185\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.699081\" y=\"84.873225\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"65.255887\" y=\"23.950336\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.476987\" y=\"61.558841\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.17341\" y=\"84.837868\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.439175\" y=\"65.454813\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.703636\" y=\"60.818737\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"170.469156\" y=\"87.588507\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.445853\" y=\"44.690794\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.554876\" y=\"76.605148\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.97088\" y=\"72.324149\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.161833\" y=\"65.024227\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"190.098565\" y=\"120.007342\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.679145\" y=\"90.118684\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"175.255947\" y=\"105.747901\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.890704\" y=\"83.657363\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"99.608881\" y=\"44.400927\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.492738\" y=\"83.780027\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"190.723686\" y=\"137.82016\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.167948\" y=\"57.208169\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.997607\" y=\"74.47358\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.377844\" y=\"42.032383\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.942028\" y=\"92.182428\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.437387\" y=\"64.57682\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.677585\" y=\"88.832092\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.684353\" y=\"82.995466\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.542914\" y=\"80.230952\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.273416\" y=\"72.72499\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.981735\" y=\"71.346925\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.486599\" y=\"59.690526\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.528063\" y=\"100.207975\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.811973\" y=\"106.006293\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"159.013927\" y=\"89.121985\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"154.532438\" y=\"95.606096\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.543858\" y=\"60.788665\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.401189\" y=\"103.054529\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.635238\" y=\"56.056954\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"183.419367\" y=\"113.798889\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.954461\" y=\"47.262718\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.344267\" y=\"50.938464\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.5047\" y=\"51.564507\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"179.807009\" y=\"108.780506\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.490157\" y=\"56.35103\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.540303\" y=\"60.725739\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.316508\" y=\"81.60017\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.999664\" y=\"73.457764\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.873275\" y=\"91.699216\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.940342\" y=\"85.297426\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"171.217496\" y=\"105.074616\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.289425\" y=\"94.093788\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.336105\" y=\"82.993841\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.550362\" y=\"69.822413\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"72.854266\" y=\"23.023055\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.654237\" y=\"75.139385\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"175.138092\" y=\"103.809143\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.770186\" y=\"86.088092\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.112465\" y=\"64.624791\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"95.137634\" y=\"40.280426\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.766046\" y=\"57.137492\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.043392\" y=\"76.167515\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.124586\" y=\"79.891157\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.069215\" y=\"80.605191\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.046417\" y=\"89.095528\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"77.374237\" y=\"48.265822\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.945534\" y=\"75.992897\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.071553\" y=\"85.836706\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.831838\" y=\"81.560004\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.801941\" y=\"62.202084\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.853838\" y=\"78.836399\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.742799\" y=\"93.253899\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.535928\" y=\"51.172423\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.324615\" y=\"103.760938\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.003168\" y=\"87.769703\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.636874\" y=\"87.478639\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"104.847639\" y=\"57.852278\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.444854\" y=\"56.06714\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.014424\" y=\"76.944874\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"101.258093\" y=\"28.884338\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.830989\" y=\"92.879318\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.476786\" y=\"54.23575\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.732638\" y=\"53.164393\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.531716\" y=\"64.326521\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"92.888119\" y=\"55.267766\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.129253\" y=\"61.103334\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"172.130712\" y=\"81.675098\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.341088\" y=\"60.068234\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"79.022204\" y=\"23.775676\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"183.598151\" y=\"102.336211\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.118107\" y=\"69.111189\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.861298\" y=\"70.860058\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"195.655922\" y=\"105.833521\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.651101\" y=\"73.893066\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.967933\" y=\"85.240942\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.198348\" y=\"60.899698\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"173.51507\" y=\"115.084623\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"169.971276\" y=\"89.418689\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.189003\" y=\"74.566421\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.566672\" y=\"63.390797\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.267112\" y=\"88.482264\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.192406\" y=\"68.989408\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.948066\" y=\"76.339645\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.448836\" y=\"73.664504\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.027003\" y=\"95.611334\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.533624\" y=\"52.728841\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.421112\" y=\"67.543266\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.982792\" y=\"68.34202\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.609516\" y=\"71.837211\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"178.393862\" y=\"113.946835\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.887941\" y=\"91.389222\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.474593\" y=\"72.258592\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.228736\" y=\"70.627819\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"99.669853\" y=\"48.115375\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.786492\" y=\"47.764103\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"94.071196\" y=\"25.856904\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.284292\" y=\"77.711207\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"157.761017\" y=\"96.463672\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.453633\" y=\"66.158725\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"72.175629\" y=\"16.989854\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.277546\" y=\"68.738477\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.620887\" y=\"83.900092\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.948873\" y=\"69.566355\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"170.95961\" y=\"99.117782\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.32923\" y=\"119.371375\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.775183\" y=\"73.333091\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.071994\" y=\"62.036828\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"91.692371\" y=\"37.990036\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.059875\" y=\"98.311618\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.381145\" y=\"63.642048\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.472728\" y=\"68.674307\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.665554\" y=\"79.956626\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.975231\" y=\"70.551624\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"96.628735\" y=\"48.83546\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"188.27841\" y=\"85.306538\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.996661\" y=\"71.970478\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.804364\" y=\"51.152895\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.251455\" y=\"59.640286\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.515035\" y=\"86.147964\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"104.074093\" y=\"65.38533\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"179.525575\" y=\"104.277879\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.798253\" y=\"65.775101\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.063297\" y=\"89.965104\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.897471\" y=\"76.854685\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"184.493459\" y=\"104.074753\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.066491\" y=\"75.72803\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.904102\" y=\"104.378775\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.371198\" y=\"80.144609\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.171778\" y=\"65.024569\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.599737\" y=\"88.372623\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.284296\" y=\"65.369609\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.532134\" y=\"91.81773\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.326194\" y=\"85.782843\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.784795\" y=\"66.582014\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"90.895131\" y=\"52.179972\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.190655\" y=\"82.729446\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.981064\" y=\"56.821347\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.900194\" y=\"55.139984\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"166.638733\" y=\"92.774413\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"154.008142\" y=\"91.847875\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.581955\" y=\"80.228757\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.205417\" y=\"88.658621\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.982276\" y=\"61.113346\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.355333\" y=\"41.220988\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"173.859735\" y=\"100.45538\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.674227\" y=\"49.202802\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.763252\" y=\"78.627791\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"172.736325\" y=\"108.915595\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.636652\" y=\"99.944477\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.866698\" y=\"72.534215\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.304011\" y=\"66.075083\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.419469\" y=\"98.602887\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"169.367517\" y=\"108.035785\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.303473\" y=\"86.650407\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"188.383112\" y=\"116.198377\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.117747\" y=\"109.967319\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.582964\" y=\"80.524576\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.508371\" y=\"83.86699\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.747686\" y=\"67.325958\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.438376\" y=\"66.56725\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.81718\" y=\"99.326863\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.172374\" y=\"92.633033\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.950869\" y=\"78.520474\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.821299\" y=\"46.776114\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.489678\" y=\"67.243168\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.830681\" y=\"79.476913\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.355722\" y=\"62.144244\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.273106\" y=\"65.0851\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.073195\" y=\"37.408215\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.772858\" y=\"79.324566\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.898945\" y=\"104.661907\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.527404\" y=\"86.425755\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.97972\" y=\"72.798198\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.254879\" y=\"95.781478\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.903886\" y=\"80.520585\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"178.076496\" y=\"115.523625\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.430773\" y=\"104.533255\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.545656\" y=\"70.475968\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"171.390674\" y=\"102.40474\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.772289\" y=\"55.796868\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.732334\" y=\"67.070328\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"183.826118\" y=\"109.67819\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.839015\" y=\"56.215004\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.296444\" y=\"56.149195\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.819298\" y=\"93.40444\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"96.650828\" y=\"34.602318\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.41023\" y=\"100.295831\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.867783\" y=\"74.811449\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.651083\" y=\"83.468342\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.535168\" y=\"85.60868\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.992314\" y=\"72.605862\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.801437\" y=\"90.619342\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.142376\" y=\"81.058577\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.697998\" y=\"108.226929\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.637955\" y=\"100.076906\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.115913\" y=\"82.743134\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"177.817816\" y=\"90.100979\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"95.991924\" y=\"40.949274\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.035699\" y=\"72.529559\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"104.667017\" y=\"32.74566\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"92.321158\" y=\"27.612385\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.673761\" y=\"77.239216\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.463996\" y=\"53.21118\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.310095\" y=\"84.654805\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.25704\" y=\"105.246184\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.687452\" y=\"65.098228\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.345026\" y=\"66.408305\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.700966\" y=\"69.517438\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"187.998302\" y=\"114.129348\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.520024\" y=\"64.366582\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.674522\" y=\"54.332681\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.99949\" y=\"59.553203\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.025876\" y=\"57.609031\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.934897\" y=\"82.653134\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.339721\" y=\"98.064538\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.954998\" y=\"58.67758\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.117432\" y=\"54.713142\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"108.465463\" y=\"45.42575\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.176178\" y=\"72.97876\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.940362\" y=\"76.167994\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.471502\" y=\"87.179113\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.735744\" y=\"60.084569\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.369704\" y=\"66.284253\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.008974\" y=\"80.112301\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.259193\" y=\"60.377186\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"169.038366\" y=\"88.555741\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.765185\" y=\"74.224137\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.130828\" y=\"96.290806\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.337406\" y=\"68.611194\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.369633\" y=\"78.324587\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.893796\" y=\"36.73667\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.03984\" y=\"95.159883\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.193285\" y=\"87.738476\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.929838\" y=\"69.343791\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.553209\" y=\"105.863736\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.490799\" y=\"75.625629\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.250003\" y=\"81.987715\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"104.213848\" y=\"59.174927\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.195137\" y=\"79.851047\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.530863\" y=\"65.399547\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.541517\" y=\"100.56981\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"101.499403\" y=\"60.726964\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.804139\" y=\"59.214949\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.263273\" y=\"90.950329\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.945808\" y=\"64.245481\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.928902\" y=\"83.138199\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.718346\" y=\"57.783337\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.633201\" y=\"71.416575\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.809336\" y=\"80.829938\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.606167\" y=\"64.873501\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"161.720268\" y=\"107.974893\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.760907\" y=\"78.949496\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.151123\" y=\"91.939613\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.409557\" y=\"67.988508\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.448789\" y=\"61.259777\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.283565\" y=\"94.055425\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.823359\" y=\"99.387917\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.077764\" y=\"89.883952\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.27208\" y=\"80.200504\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.217946\" y=\"91.162854\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.520416\" y=\"56.382275\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.63784\" y=\"64.602589\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.169292\" y=\"87.382118\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"177.196579\" y=\"106.116365\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.212214\" y=\"78.970271\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.216195\" y=\"69.778288\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"99.695254\" y=\"59.472645\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.169394\" y=\"97.41627\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.360585\" y=\"72.534368\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.821205\" y=\"79.738089\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.161533\" y=\"61.412146\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.069586\" y=\"77.115322\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.379224\" y=\"54.755421\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.425022\" y=\"82.321978\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.039996\" y=\"91.812151\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.44926\" y=\"41.49883\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.590427\" y=\"63.343249\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.226335\" y=\"64.76732\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.815774\" y=\"92.278438\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"86.551679\" y=\"32.28706\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.357077\" y=\"60.303006\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.962833\" y=\"84.083729\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.751161\" y=\"99.19322\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.095609\" y=\"76.109219\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.191184\" y=\"85.819749\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.306039\" y=\"103.083987\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.48063\" y=\"72.098321\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.376672\" y=\"68.724797\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.803637\" y=\"102.261989\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.247355\" y=\"72.187564\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.934249\" y=\"69.749207\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.748083\" y=\"77.760734\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"100.232654\" y=\"68.424063\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.575085\" y=\"50.556977\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.366846\" y=\"72.029335\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"96.785698\" y=\"57.628213\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.168056\" y=\"62.940299\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.319115\" y=\"52.405841\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.322944\" y=\"89.398369\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.591523\" y=\"59.515052\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.154766\" y=\"85.402542\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.433013\" y=\"47.684011\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.615846\" y=\"96.590889\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.020806\" y=\"68.028703\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.187238\" y=\"88.016336\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.007895\" y=\"58.421849\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.247841\" y=\"92.960507\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"166.374214\" y=\"89.297098\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"161.267409\" y=\"73.025485\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.305578\" y=\"91.160495\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.600797\" y=\"82.292764\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.133593\" y=\"71.229729\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"199.478301\" y=\"133.759273\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.059673\" y=\"84.093714\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.310533\" y=\"77.696332\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.195478\" y=\"89.458543\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.76397\" y=\"102.517616\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.445241\" y=\"83.880234\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.504647\" y=\"54.239509\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.026357\" y=\"69.713877\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.825149\" y=\"81.999313\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.255161\" y=\"92.101128\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"178.147558\" y=\"112.009742\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.479619\" y=\"76.147233\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.841735\" y=\"91.665453\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.58447\" y=\"60.658839\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"109.659163\" y=\"51.535543\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.891203\" y=\"80.839898\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.887167\" y=\"48.487464\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.458009\" y=\"66.100998\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.339281\" y=\"82.069946\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.275596\" y=\"78.556036\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.326489\" y=\"83.317019\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.613658\" y=\"77.860443\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.332997\" y=\"73.050884\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.875169\" y=\"51.079231\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.566319\" y=\"78.235457\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.641665\" y=\"67.83213\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.938174\" y=\"48.445109\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.712227\" y=\"71.394794\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.047748\" y=\"72.010966\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.446454\" y=\"70.201649\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.857679\" y=\"49.445079\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"176.359798\" y=\"77.332622\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.043585\" y=\"80.159953\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.237068\" y=\"78.089967\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.639539\" y=\"69.742538\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"172.975205\" y=\"91.065021\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.045065\" y=\"75.635484\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.91859\" y=\"100.49181\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.976727\" y=\"45.599068\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.758787\" y=\"88.362489\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.892723\" y=\"49.201603\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.415569\" y=\"88.527252\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.458945\" y=\"69.51097\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.203516\" y=\"41.309357\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.279799\" y=\"87.779059\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.993669\" y=\"86.623193\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.982662\" y=\"78.34696\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.198162\" y=\"112.418714\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.502169\" y=\"83.678931\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.257628\" y=\"96.58243\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.82139\" y=\"55.636958\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.222849\" y=\"71.799376\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"173.318732\" y=\"101.654071\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.331013\" y=\"46.369937\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.503936\" y=\"75.280438\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.372937\" y=\"53.708969\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"82.275278\" y=\"38.55229\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.80488\" y=\"97.31239\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"109.824666\" y=\"52.734925\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.210865\" y=\"57.235039\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.659285\" y=\"47.983271\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"78.691031\" y=\"29.251169\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.222794\" y=\"66.188203\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.942267\" y=\"97.01098\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"175.21053\" y=\"108.068518\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.813654\" y=\"87.339363\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.19157\" y=\"95.727649\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.38682\" y=\"76.561105\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.251871\" y=\"69.366476\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.673256\" y=\"64.037867\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.993031\" y=\"57.870125\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.60646\" y=\"96.90289\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.459381\" y=\"113.524575\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"173.649372\" y=\"95.895082\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"72.125367\" y=\"25.472713\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.009726\" y=\"91.775283\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"185.295313\" y=\"111.388943\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.093448\" y=\"75.297781\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"171.680373\" y=\"97.491074\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.397924\" y=\"71.662545\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.577941\" y=\"110.73085\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"108.694778\" y=\"56.96575\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.855272\" y=\"44.856299\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.060987\" y=\"75.795168\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.94449\" y=\"84.825607\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.030773\" y=\"57.610619\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.241034\" y=\"89.573601\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.895211\" y=\"69.535805\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.476309\" y=\"58.07606\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.820373\" y=\"72.966119\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.240192\" y=\"83.011627\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.110581\" y=\"76.248842\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.620404\" y=\"89.600438\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.295821\" y=\"80.414387\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.351863\" y=\"88.140576\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.161165\" y=\"88.459754\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.189531\" y=\"85.535674\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"96.915037\" y=\"43.499545\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.611634\" y=\"42.736427\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.626035\" y=\"89.184427\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.985924\" y=\"50.255305\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.01298\" y=\"78.393411\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.143009\" y=\"79.9193\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.775866\" y=\"60.098325\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.568474\" y=\"83.301632\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"159.183649\" y=\"73.738648\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.204603\" y=\"101.595101\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.963163\" y=\"78.583215\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.316179\" y=\"87.185185\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"109.060461\" y=\"35.290115\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.839569\" y=\"97.111382\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.946826\" y=\"57.089547\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"159.079482\" y=\"103.236064\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.20221\" y=\"81.869332\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.612529\" y=\"68.256555\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"99.089988\" y=\"36.180685\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.937776\" y=\"74.565919\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.534505\" y=\"72.685718\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.613269\" y=\"59.858836\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.896249\" y=\"82.340725\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.17002\" y=\"76.035573\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.407327\" y=\"85.89612\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"157.961112\" y=\"90.56874\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.230203\" y=\"78.199873\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.535068\" y=\"82.491554\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.022038\" y=\"49.677037\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.422613\" y=\"54.908141\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.12708\" y=\"60.866887\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.104389\" y=\"98.005756\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.792747\" y=\"54.963452\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.915912\" y=\"54.299285\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.669864\" y=\"79.12999\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.841183\" y=\"74.506176\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.461462\" y=\"83.099201\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.334783\" y=\"87.42944\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"68.992825\" y=\"31.128883\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.115786\" y=\"92.469369\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.178159\" y=\"81.698842\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.969506\" y=\"64.226357\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.741256\" y=\"85.662453\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.781015\" y=\"77.071682\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.003219\" y=\"76.69658\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.221829\" y=\"94.157748\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.716523\" y=\"95.680367\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"92.884651\" y=\"52.682737\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"85.672132\" y=\"57.477092\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.843971\" y=\"97.981835\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"157.366666\" y=\"82.472163\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"207.6773\" y=\"129.413155\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"172.23214\" y=\"102.196816\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.806683\" y=\"54.370958\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.442725\" y=\"68.375297\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.561296\" y=\"69.685039\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"99.833876\" y=\"54.02673\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"86.597735\" y=\"43.824145\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.847503\" y=\"62.405302\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"171.869828\" y=\"89.70523\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.124417\" y=\"86.498686\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.194826\" y=\"92.726603\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.795489\" y=\"72.944431\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.049151\" y=\"41.845465\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.238817\" y=\"57.730695\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.666432\" y=\"84.44467\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.905579\" y=\"81.178441\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.694217\" y=\"94.491594\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"108.10095\" y=\"61.962695\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.83834\" y=\"75.160892\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.913256\" y=\"84.077346\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.409547\" y=\"108.374057\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.936315\" y=\"80.816418\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.844139\" y=\"52.875606\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.781696\" y=\"63.466575\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.861952\" y=\"51.647446\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.585754\" y=\"82.151733\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.293623\" y=\"93.6992\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.244703\" y=\"52.123157\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.040299\" y=\"41.871798\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.159759\" y=\"45.228693\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.698888\" y=\"99.25207\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.943397\" y=\"58.983204\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.122987\" y=\"63.215971\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.098748\" y=\"56.105575\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.39632\" y=\"100.281145\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.91783\" y=\"57.597386\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"83.259566\" y=\"31.361031\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.563185\" y=\"68.723071\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.285353\" y=\"86.701264\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.433854\" y=\"68.004175\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.492515\" y=\"93.362331\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"174.10501\" y=\"105.024692\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.001655\" y=\"87.643668\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.967961\" y=\"62.699763\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.278017\" y=\"98.659327\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.910692\" y=\"64.876777\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.620648\" y=\"71.916198\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"170.956371\" y=\"112.94322\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.333338\" y=\"70.566338\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"79.980599\" y=\"33.251161\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.999219\" y=\"87.917349\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.67749\" y=\"77.028509\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"176.774039\" y=\"84.009636\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.410453\" y=\"76.905188\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.397084\" y=\"82.496351\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.323665\" y=\"59.800896\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"85.480946\" y=\"26.232761\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"166.892718\" y=\"87.036633\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.383815\" y=\"82.681643\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.41715\" y=\"42.626601\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.743562\" y=\"106.295928\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.281501\" y=\"86.230181\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.190024\" y=\"102.03083\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.329867\" y=\"50.780176\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.064169\" y=\"65.992082\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"62.456648\" y=\"27.011013\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.350301\" y=\"45.309005\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.970073\" y=\"76.261087\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.588848\" y=\"59.504417\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"173.76721\" y=\"111.594893\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.106943\" y=\"72.48191\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"166.097856\" y=\"99.148838\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"172.536404\" y=\"122.717282\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"93.686676\" y=\"39.766109\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.223007\" y=\"69.69736\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.007968\" y=\"68.361168\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.873878\" y=\"110.237345\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.039805\" y=\"97.391908\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.673825\" y=\"91.507585\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.779905\" y=\"88.162355\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.206464\" y=\"103.197275\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.008504\" y=\"97.196819\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.676567\" y=\"53.324798\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.282287\" y=\"51.063352\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.148909\" y=\"64.162306\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.70359\" y=\"58.650249\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.992739\" y=\"45.875959\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.413283\" y=\"61.057399\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"108.945928\" y=\"50.707161\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.19248\" y=\"98.16511\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"104.671951\" y=\"55.537276\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.779452\" y=\"76.072844\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.45157\" y=\"89.702454\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.662714\" y=\"90.456129\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.747629\" y=\"45.343715\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.222584\" y=\"91.237822\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.117855\" y=\"57.675584\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.904358\" y=\"83.031453\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.493253\" y=\"58.07227\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.329848\" y=\"64.252277\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.114609\" y=\"74.128968\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"95.389005\" y=\"34.004571\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.226945\" y=\"73.488655\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.223779\" y=\"64.356923\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"92.442284\" y=\"37.615473\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.659961\" y=\"87.456923\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.175385\" y=\"60.337155\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.307445\" y=\"61.423063\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.923465\" y=\"39.425363\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.189332\" y=\"94.690623\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.713601\" y=\"78.473746\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.334141\" y=\"54.659111\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"91.130694\" y=\"43.109925\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.374199\" y=\"56.778345\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.048717\" y=\"78.664547\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.935907\" y=\"96.479196\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.145971\" y=\"52.633949\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.259725\" y=\"62.141849\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.640636\" y=\"72.211387\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.436385\" y=\"67.821084\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.373444\" y=\"79.231108\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.294308\" y=\"65.698536\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"98.683094\" y=\"51.326528\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.275761\" y=\"72.766474\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.693396\" y=\"89.012794\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.215792\" y=\"47.780149\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.607244\" y=\"76.589729\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.11891\" y=\"52.007366\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.404669\" y=\"65.276336\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.733401\" y=\"71.422492\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.314895\" y=\"66.667928\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"154.940026\" y=\"107.795533\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"65.417937\" y=\"37.858591\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.687556\" y=\"75.064849\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.119332\" y=\"91.210266\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"99.293796\" y=\"58.533564\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"154.933002\" y=\"88.83195\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.40686\" y=\"53.640405\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.735257\" y=\"69.219601\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.75606\" y=\"79.796197\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.586078\" y=\"81.070669\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"44.18196\" y=\"13.5\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"182.474887\" y=\"121.51437\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.941843\" y=\"71.474258\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.553182\" y=\"93.612422\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.991748\" y=\"91.468475\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.877053\" y=\"78.240881\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.158693\" y=\"66.860699\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.40959\" y=\"65.201091\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.750496\" y=\"88.339791\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"186.55112\" y=\"116.141043\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.154803\" y=\"81.101324\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.076904\" y=\"93.668716\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"161.543851\" y=\"97.98279\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.860092\" y=\"70.104319\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.346529\" y=\"58.246015\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"182.998531\" y=\"115.822926\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.829033\" y=\"87.948612\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.279892\" y=\"63.072955\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.791427\" y=\"55.137477\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.255673\" y=\"62.415029\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"108.663849\" y=\"71.609234\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"177.72737\" y=\"107.823855\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.972388\" y=\"81.194843\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.248427\" y=\"108.031568\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.500197\" y=\"79.207924\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"101.820057\" y=\"56.637036\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.762891\" y=\"63.432133\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.811982\" y=\"81.7638\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"163.235252\" y=\"101.32837\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"181.972733\" y=\"112.861289\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.143784\" y=\"80.413664\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.540494\" y=\"91.9223\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"170.764948\" y=\"91.80386\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"104.267533\" y=\"37.173588\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.08918\" y=\"66.079142\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.426787\" y=\"57.45096\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"93.581415\" y=\"51.776641\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.425637\" y=\"85.845229\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.706087\" y=\"69.454214\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.711484\" y=\"35.427023\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.588744\" y=\"69.629076\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.607433\" y=\"70.48838\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.234916\" y=\"96.671138\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.928278\" y=\"107.074166\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.862127\" y=\"85.428038\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"101.804826\" y=\"51.236459\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"181.376561\" y=\"98.706326\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"156.021908\" y=\"81.894936\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"146.074591\" y=\"63.150053\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"103.611282\" y=\"43.139796\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.484006\" y=\"66.749677\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.166623\" y=\"71.897059\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.954528\" y=\"101.683147\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.086233\" y=\"90.943617\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.295409\" y=\"85.895926\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.809389\" y=\"63.026371\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.754075\" y=\"77.761864\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.660462\" y=\"56.925222\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.837483\" y=\"82.024553\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.941366\" y=\"101.898457\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"157.03702\" y=\"114.363197\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"159.390199\" y=\"72.546245\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.955585\" y=\"65.67241\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.802574\" y=\"98.930852\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.177172\" y=\"93.474421\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.074064\" y=\"74.551048\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.343217\" y=\"55.31674\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"109.940869\" y=\"36.148368\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"173.303642\" y=\"113.315324\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"95.498672\" y=\"57.59399\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.770335\" y=\"73.88079\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.148146\" y=\"64.416253\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.385936\" y=\"63.305803\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.923953\" y=\"66.472826\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.361182\" y=\"65.529745\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.963592\" y=\"72.176346\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"102.852539\" y=\"43.277803\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"96.678269\" y=\"42.296662\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.462396\" y=\"75.284266\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"121.464706\" y=\"66.192611\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.675048\" y=\"48.293946\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.611147\" y=\"87.416353\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.695896\" y=\"87.917409\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.132937\" y=\"73.021256\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.169309\" y=\"96.808701\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.071973\" y=\"78.249133\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.636801\" y=\"82.050607\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"92.652685\" y=\"41.642175\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.588826\" y=\"92.292064\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.462467\" y=\"75.934307\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"94.595463\" y=\"42.381096\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.270243\" y=\"94.057164\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.599138\" y=\"72.214783\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.510282\" y=\"77.003777\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.996148\" y=\"65.660393\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.025206\" y=\"76.160106\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"161.92082\" y=\"92.369462\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"96.199708\" y=\"51.906443\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.968555\" y=\"81.240075\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.525183\" y=\"81.300318\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.705438\" y=\"83.330365\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"170.448336\" y=\"101.641874\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"185.686514\" y=\"112.421713\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"154.098976\" y=\"83.783046\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.453223\" y=\"104.161457\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.622147\" y=\"75.740119\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.870877\" y=\"82.51396\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.119966\" y=\"80.487468\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"87.11983\" y=\"56.513452\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"89.640471\" y=\"45.630931\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.574703\" y=\"71.438207\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"159.55969\" y=\"97.524551\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.603952\" y=\"81.739418\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.609598\" y=\"49.88089\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.129578\" y=\"88.310086\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"118.808875\" y=\"66.030765\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.094999\" y=\"97.321878\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"97.185061\" y=\"42.292765\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.834096\" y=\"69.347621\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.574625\" y=\"90.260273\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.660246\" y=\"72.490709\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"97.849764\" y=\"40.203257\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.066623\" y=\"62.155287\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.908314\" y=\"67.387024\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.460558\" y=\"57.785135\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.555829\" y=\"33.775025\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.829142\" y=\"63.646179\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.754268\" y=\"80.887476\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"107.233191\" y=\"61.857328\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.693636\" y=\"80.655266\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"123.274024\" y=\"53.825036\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.958921\" y=\"90.320663\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.172969\" y=\"61.475249\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.52551\" y=\"100.525252\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.471188\" y=\"80.788365\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.228957\" y=\"81.843632\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.085512\" y=\"78.338401\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.894767\" y=\"83.369242\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.111271\" y=\"67.277588\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.349012\" y=\"70.505706\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.089802\" y=\"69.302377\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.004349\" y=\"69.54852\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"100.65475\" y=\"57.7628\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.690036\" y=\"85.449788\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"185.632826\" y=\"102.376897\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.643265\" y=\"81.264547\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"136.478937\" y=\"64.717596\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.947809\" y=\"78.68617\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.8449\" y=\"85.515441\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"182.383591\" y=\"100.476665\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.005806\" y=\"77.427689\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"82.89084\" y=\"37.899977\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.535299\" y=\"70.520143\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.357192\" y=\"61.600275\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"178.19263\" y=\"81.867971\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.74502\" y=\"67.646067\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"142.331627\" y=\"75.271236\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.45725\" y=\"87.24564\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.405283\" y=\"87.54087\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.78138\" y=\"47.222699\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"73.310222\" y=\"36.809861\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.616778\" y=\"76.829815\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"211.725973\" y=\"130.595591\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.644823\" y=\"66.242867\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.980794\" y=\"66.005401\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"100.800805\" y=\"35.622127\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"124.090461\" y=\"50.915374\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"88.181733\" y=\"47.320079\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.759303\" y=\"98.411941\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"134.315376\" y=\"72.474434\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.266274\" y=\"68.388967\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.526904\" y=\"62.146522\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.435507\" y=\"65.10367\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.238868\" y=\"73.794578\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.571915\" y=\"77.224289\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.890391\" y=\"80.298094\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.607956\" y=\"95.653794\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.792559\" y=\"71.955764\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"108.750181\" y=\"42.424038\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.481747\" y=\"74.057665\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"129.373063\" y=\"67.558202\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"164.583984\" y=\"102.409181\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"153.344916\" y=\"91.5885\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"73.134615\" y=\"47.891727\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.128781\" y=\"95.002883\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"131.401827\" y=\"73.894164\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.250344\" y=\"49.248467\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"172.435851\" y=\"102.649508\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"114.109518\" y=\"53.392015\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"91.915446\" y=\"32.612654\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.861495\" y=\"83.9863\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"122.59157\" y=\"73.900797\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.410202\" y=\"80.836737\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.877788\" y=\"87.863472\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"160.784546\" y=\"80.442386\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.155121\" y=\"76.547333\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.719624\" y=\"64.397119\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"113.365575\" y=\"46.747198\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.035983\" y=\"75.936888\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.820863\" y=\"87.648312\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"106.025816\" y=\"58.418853\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"149.9598\" y=\"66.999751\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"125.353863\" y=\"66.463289\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"145.470741\" y=\"108.055709\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.365557\" y=\"54.389387\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"133.178079\" y=\"68.68536\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"135.667807\" y=\"70.443621\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"191.371431\" y=\"120.878267\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"158.268868\" y=\"91.310103\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.552701\" y=\"72.716805\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.417343\" y=\"75.338333\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.201261\" y=\"88.479976\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.636238\" y=\"81.929519\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.787136\" y=\"60.100483\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"141.046962\" y=\"93.155898\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.034779\" y=\"84.8128\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"154.787363\" y=\"87.249161\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"105.99299\" y=\"58.916753\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"143.481272\" y=\"79.383432\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.882603\" y=\"82.389438\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"116.945857\" y=\"66.793346\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"132.62355\" y=\"71.787659\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"139.053429\" y=\"56.743562\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.725139\" y=\"67.226503\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"117.562565\" y=\"52.428291\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"167.828454\" y=\"99.585082\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"221.727415\" y=\"139.5\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.634001\" y=\"83.996915\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"110.203847\" y=\"62.108479\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"165.851979\" y=\"105.112821\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"126.004548\" y=\"83.581803\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.206348\" y=\"65.524741\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"112.959932\" y=\"59.585345\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"178.448617\" y=\"109.509479\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.288997\" y=\"73.921762\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"185.948703\" y=\"109.83049\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"127.199509\" y=\"60.585731\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.06675\" y=\"84.878646\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"138.24838\" y=\"76.422379\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"151.39922\" y=\"83.490031\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.459121\" y=\"101.306147\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"150.391721\" y=\"80.722622\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.367862\" y=\"76.924739\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"120.183446\" y=\"49.208867\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"115.279058\" y=\"48.063731\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"168.825713\" y=\"100.239581\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"130.199704\" y=\"73.453998\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"111.851884\" y=\"58.223701\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"148.621347\" y=\"91.366005\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"71.319543\" y=\"40.099291\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"144.936325\" y=\"83.975608\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"128.6867\" y=\"66.239071\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"155.961136\" y=\"84.363503\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.262845\" y=\"77.579278\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"54.293457\" y=\"28.120083\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"152.564279\" y=\"83.144514\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"100.681768\" y=\"61.285209\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"137.763923\" y=\"75.796445\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"180.928821\" y=\"98.523024\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"147.877879\" y=\"91.613276\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"162.762656\" y=\"115.28301\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"140.376868\" y=\"83.646249\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "     <use xlink:href=\"#m1e032836a3\" x=\"119.558262\" y=\"60.169396\" style=\"fill: #1f77b4; stroke: #1f77b4\"/>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_1\">\n",
       "    <g id=\"xtick_1\">\n",
       "     <g id=\"line2d_1\">\n",
       "      <defs>\n",
       "       <path id=\"m909d7f5489\" d=\"M 0 0 \n",
       "L 0 3.5 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#m909d7f5489\" x=\"39.435826\" y=\"145.8\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_1\">\n",
       "      <!-- −4 -->\n",
       "      <g transform=\"translate(32.064732 160.398438)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \n",
       "L 4684 2272 \n",
       "L 4684 1741 \n",
       "L 678 1741 \n",
       "L 678 2272 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "        <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \n",
       "L 825 1625 \n",
       "L 2419 1625 \n",
       "L 2419 4116 \n",
       "z\n",
       "M 2253 4666 \n",
       "L 3047 4666 \n",
       "L 3047 1625 \n",
       "L 3713 1625 \n",
       "L 3713 1100 \n",
       "L 3047 1100 \n",
       "L 3047 0 \n",
       "L 2419 0 \n",
       "L 2419 1100 \n",
       "L 313 1100 \n",
       "L 313 1709 \n",
       "L 2253 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-34\" x=\"83.789062\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_2\">\n",
       "     <g id=\"line2d_2\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m909d7f5489\" x=\"87.567032\" y=\"145.8\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_2\">\n",
       "      <!-- −2 -->\n",
       "      <g transform=\"translate(80.195938 160.398438)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-32\" d=\"M 1228 531 \n",
       "L 3431 531 \n",
       "L 3431 0 \n",
       "L 469 0 \n",
       "L 469 531 \n",
       "Q 828 903 1448 1529 \n",
       "Q 2069 2156 2228 2338 \n",
       "Q 2531 2678 2651 2914 \n",
       "Q 2772 3150 2772 3378 \n",
       "Q 2772 3750 2511 3984 \n",
       "Q 2250 4219 1831 4219 \n",
       "Q 1534 4219 1204 4116 \n",
       "Q 875 4013 500 3803 \n",
       "L 500 4441 \n",
       "Q 881 4594 1212 4672 \n",
       "Q 1544 4750 1819 4750 \n",
       "Q 2544 4750 2975 4387 \n",
       "Q 3406 4025 3406 3419 \n",
       "Q 3406 3131 3298 2873 \n",
       "Q 3191 2616 2906 2266 \n",
       "Q 2828 2175 2409 1742 \n",
       "Q 1991 1309 1228 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-32\" x=\"83.789062\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_3\">\n",
       "     <g id=\"line2d_3\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m909d7f5489\" x=\"135.698237\" y=\"145.8\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_3\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(132.516987 160.398438)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \n",
       "Q 1547 4250 1301 3770 \n",
       "Q 1056 3291 1056 2328 \n",
       "Q 1056 1369 1301 889 \n",
       "Q 1547 409 2034 409 \n",
       "Q 2525 409 2770 889 \n",
       "Q 3016 1369 3016 2328 \n",
       "Q 3016 3291 2770 3770 \n",
       "Q 2525 4250 2034 4250 \n",
       "z\n",
       "M 2034 4750 \n",
       "Q 2819 4750 3233 4129 \n",
       "Q 3647 3509 3647 2328 \n",
       "Q 3647 1150 3233 529 \n",
       "Q 2819 -91 2034 -91 \n",
       "Q 1250 -91 836 529 \n",
       "Q 422 1150 422 2328 \n",
       "Q 422 3509 836 4129 \n",
       "Q 1250 4750 2034 4750 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_4\">\n",
       "     <g id=\"line2d_4\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m909d7f5489\" x=\"183.829443\" y=\"145.8\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_4\">\n",
       "      <!-- 2 -->\n",
       "      <g transform=\"translate(180.648193 160.398438)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_2\">\n",
       "    <g id=\"ytick_1\">\n",
       "     <g id=\"line2d_5\">\n",
       "      <defs>\n",
       "       <path id=\"mf8ad82bf7c\" d=\"M 0 0 \n",
       "L -3.5 0 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#mf8ad82bf7c\" x=\"35.304688\" y=\"145.481629\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_5\">\n",
       "      <!-- −10 -->\n",
       "      <g transform=\"translate(7.2 149.280848)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-31\" d=\"M 794 531 \n",
       "L 1825 531 \n",
       "L 1825 4091 \n",
       "L 703 3866 \n",
       "L 703 4441 \n",
       "L 1819 4666 \n",
       "L 2450 4666 \n",
       "L 2450 531 \n",
       "L 3481 531 \n",
       "L 3481 0 \n",
       "L 794 0 \n",
       "L 794 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"147.412109\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_2\">\n",
       "     <g id=\"line2d_6\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mf8ad82bf7c\" x=\"35.304688\" y=\"120.443536\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_6\">\n",
       "      <!-- −5 -->\n",
       "      <g transform=\"translate(13.5625 124.242755)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-35\" d=\"M 691 4666 \n",
       "L 3169 4666 \n",
       "L 3169 4134 \n",
       "L 1269 4134 \n",
       "L 1269 2991 \n",
       "Q 1406 3038 1543 3061 \n",
       "Q 1681 3084 1819 3084 \n",
       "Q 2600 3084 3056 2656 \n",
       "Q 3513 2228 3513 1497 \n",
       "Q 3513 744 3044 326 \n",
       "Q 2575 -91 1722 -91 \n",
       "Q 1428 -91 1123 -41 \n",
       "Q 819 9 494 109 \n",
       "L 494 744 \n",
       "Q 775 591 1075 516 \n",
       "Q 1375 441 1709 441 \n",
       "Q 2250 441 2565 725 \n",
       "Q 2881 1009 2881 1497 \n",
       "Q 2881 1984 2565 2268 \n",
       "Q 2250 2553 1709 2553 \n",
       "Q 1456 2553 1204 2497 \n",
       "Q 953 2441 691 2322 \n",
       "L 691 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"83.789062\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_3\">\n",
       "     <g id=\"line2d_7\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mf8ad82bf7c\" x=\"35.304688\" y=\"95.405444\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_7\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(21.942187 99.204662)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_4\">\n",
       "     <g id=\"line2d_8\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mf8ad82bf7c\" x=\"35.304688\" y=\"70.367351\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_8\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(21.942187 74.16657)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-35\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_5\">\n",
       "     <g id=\"line2d_9\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mf8ad82bf7c\" x=\"35.304688\" y=\"45.329259\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_9\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(15.579687 49.128477)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_6\">\n",
       "     <g id=\"line2d_10\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mf8ad82bf7c\" x=\"35.304688\" y=\"20.291166\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_10\">\n",
       "      <!-- 15 -->\n",
       "      <g transform=\"translate(15.579687 24.090385)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"63.623047\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_3\">\n",
       "    <path d=\"M 35.304688 145.8 \n",
       "L 35.304688 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_4\">\n",
       "    <path d=\"M 230.604688 145.8 \n",
       "L 230.604688 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_5\">\n",
       "    <path d=\"M 35.304688 145.8 \n",
       "L 230.604688 145.8 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_6\">\n",
       "    <path d=\"M 35.304688 7.2 \n",
       "L 230.604688 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "  </g>\n",
       " </g>\n",
       " <defs>\n",
       "  <clipPath id=\"p21cb41e582\">\n",
       "   <rect x=\"35.304688\" y=\"7.2\" width=\"195.3\" height=\"138.6\"/>\n",
       "  </clipPath>\n",
       " </defs>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<Figure size 350x250 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "d2l.set_figsize()\n",
    "d2l.plt.scatter(features[:, (1)].detach().numpy(), labels.detach().numpy(), 1);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9810a549-14d5-45a6-b766-5a6dbf50fa18",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "定义一个`data_iter`函数，\n",
    "该函数接收批量大小、特征矩阵和标签向量作为输入，生成大小为`batch_size`的小批量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "6ca5e14c-f1d6-4f2b-bd57-e72c9252f452",
   "metadata": {
    "origin_pos": 16,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "def data_iter(batch_size, features, labels):\n",
    "    num_examples = len(features)\n",
    "    indices = list(range(num_examples))\n",
    "    random.shuffle(indices)  # 这些样本是随机读取的，没有特定的顺序\n",
    "    for i in range(0, num_examples, batch_size):\n",
    "        batch_indices = torch.tensor(\n",
    "            indices[i: min(i + batch_size, num_examples)])\n",
    "        yield features[batch_indices], labels[batch_indices]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "89ed6ef0-e020-4f6f-b788-9f0625ec0161",
   "metadata": {
    "origin_pos": 16,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tab": [
     "pytorch"
    ],
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 0.4983, -0.6839],\n",
      "        [ 0.9086,  0.1984],\n",
      "        [-0.9412,  1.7741],\n",
      "        [ 0.5633,  0.5367],\n",
      "        [-0.5475,  1.1045],\n",
      "        [-0.4858,  0.1637],\n",
      "        [-0.6546,  0.7451],\n",
      "        [ 0.0917, -0.5540],\n",
      "        [ 1.0365,  0.3422],\n",
      "        [-1.3411,  1.1863]]) \n",
      " tensor([[ 7.5235],\n",
      "        [ 5.3381],\n",
      "        [-3.7026],\n",
      "        [ 3.5037],\n",
      "        [-0.6498],\n",
      "        [ 2.6669],\n",
      "        [ 0.3536],\n",
      "        [ 6.2596],\n",
      "        [ 5.1234],\n",
      "        [-2.5214]])\n"
     ]
    }
   ],
   "source": [
    "batch_size = 10\n",
    "\n",
    "for X, y in data_iter(batch_size, features, labels):\n",
    "    print(X, '\\n', y)\n",
    "    break"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a23201e5-a1e7-460e-83e9-fac956fb7ade",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "在我们开始用小批量随机梯度下降优化我们的模型参数之前\n",
    "我们需要先有一些参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ebe326c7-d78f-42d2-abc3-57741be363a5",
   "metadata": {
    "origin_pos": 19,
    "tab": [
     "pytorch"
    ],
    "tags": []
   },
   "outputs": [],
   "source": [
    "w = torch.normal(0, 0.01, size=(2,1), requires_grad=True)\n",
    "b = torch.zeros(1, requires_grad=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4d10480-4182-4c33-9cd7-54320f2f3453",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "定义模型，将模型的输入和参数同模型的输出关联起来"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f2779003-d348-4712-afcc-b0e5a2f588b9",
   "metadata": {
    "origin_pos": 22,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "def linreg(X, w, b):  \n",
    "    \"\"\"线性回归模型\"\"\"\n",
    "    return torch.matmul(X, w) + b"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e817d119-d0d3-4ced-b559-8fcd7286615e",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "定义损失函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "a2160898-f709-4b0d-a4c2-d30f47775eff",
   "metadata": {
    "origin_pos": 24,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "def squared_loss(y_hat, y):  \n",
    "    \"\"\"均方损失\"\"\"\n",
    "    return (y_hat - y.reshape(y_hat.shape)) ** 2 / 2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3c1eab90-6484-409c-b01f-1547ae043d9a",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "定义优化算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "20cc3c52-4538-43e6-acf8-130846cba391",
   "metadata": {
    "origin_pos": 27,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "def sgd(params, lr, batch_size):  \n",
    "    \"\"\"小批量随机梯度下降\"\"\"\n",
    "    with torch.no_grad():\n",
    "        for param in params:\n",
    "            param -= lr * param.grad / batch_size\n",
    "            param.grad.zero_()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9e3b351c-4673-4278-afd6-4a7ab6262757",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "训练过程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a3d0fbca-3007-4d70-a529-bcc3c89d140a",
   "metadata": {
    "origin_pos": 32,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 1, loss 0.035369\n",
      "epoch 2, loss 0.000128\n",
      "epoch 3, loss 0.000051\n"
     ]
    }
   ],
   "source": [
    "lr = 0.03\n",
    "num_epochs = 3\n",
    "net = linreg\n",
    "loss = squared_loss\n",
    "\n",
    "for epoch in range(num_epochs):\n",
    "    for X, y in data_iter(batch_size, features, labels):\n",
    "        l = loss(net(X, w, b), y)  # X和y的小批量损失\n",
    "        # 因为l形状是(batch_size,1)，而不是一个标量。\n",
    "        l.sum().backward()  # l中的所有元素被加到一起，并以此计算关于[w,b]的梯度\n",
    "        sgd([w, b], lr, batch_size)\n",
    "    with torch.no_grad():\n",
    "        train_l = loss(net(features, w, b), labels)\n",
    "        print(f'epoch {epoch + 1}, loss {float(train_l.mean()):f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e92e5c1e-cfbf-4fb1-8593-bc53e531976c",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "比较真实参数和通过训练学到的参数来评估训练的成功程度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "1822da05-a22e-43cd-a443-d09f640daafe",
   "metadata": {
    "origin_pos": 35,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w的估计误差: tensor([ 0.0011, -0.0005], grad_fn=<SubBackward0>)\n",
      "b的估计误差: tensor([0.0004], grad_fn=<RsubBackward1>)\n"
     ]
    }
   ],
   "source": [
    "print(f'w的估计误差: {true_w - w.reshape(true_w.shape)}')\n",
    "print(f'b的估计误差: {true_b - b}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9ea5874-18f0-4c81-b536-1f3ffabfe38c",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "## 线性回归的简洁实现"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48641c86-e087-4daa-a591-0c8c41fe3fd3",
   "metadata": {},
   "source": [
    "通过使用深度学习框架来简洁地实现线性回归模型\n",
    "\n",
    "首先生成数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "713a636a-30b5-473d-8614-70f8cabf080e",
   "metadata": {
    "origin_pos": 4,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "from torch.utils import data\n",
    "from d2l import torch as d2l\n",
    "\n",
    "true_w = torch.tensor([2, -3.4])\n",
    "true_b = 4.2\n",
    "features, labels = d2l.synthetic_data(true_w, true_b, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ebbf6c90-48e9-4dd1-98d4-dba177b4d84a",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "调用框架中现有的API来读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f73bdcc1-8586-491b-880f-6812bf6313b9",
   "metadata": {
    "origin_pos": 11,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[tensor([[-0.7491,  1.8152],\n",
       "         [ 2.4920,  0.1592],\n",
       "         [ 1.9233,  0.3220],\n",
       "         [ 0.8503,  1.4565],\n",
       "         [ 0.4859,  0.6209],\n",
       "         [-0.9299, -1.5807],\n",
       "         [ 1.8116,  1.2680],\n",
       "         [ 0.7691,  0.2507],\n",
       "         [ 0.8320, -0.9070],\n",
       "         [ 0.5925,  0.2233]]),\n",
       " tensor([[-3.4789],\n",
       "         [ 8.6513],\n",
       "         [ 6.9465],\n",
       "         [ 0.9517],\n",
       "         [ 3.0479],\n",
       "         [ 7.7058],\n",
       "         [ 3.5047],\n",
       "         [ 4.8805],\n",
       "         [ 8.9502],\n",
       "         [ 4.6297]])]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def load_array(data_arrays, batch_size, is_train=True):  \n",
    "    \"\"\"构造一个PyTorch数据迭代器\"\"\"\n",
    "    dataset = data.TensorDataset(*data_arrays)\n",
    "    return data.DataLoader(dataset, batch_size, shuffle=is_train)\n",
    "\n",
    "batch_size = 10\n",
    "data_iter = load_array((features, labels), batch_size)\n",
    "\n",
    "next(iter(data_iter))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf07e6f2-f783-4187-a0ff-70e35643dfcd",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "使用框架的预定义好的层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "474fee23-20ce-45ad-88cb-1cf4d1eacf12",
   "metadata": {
    "origin_pos": 17,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "from torch import nn  # nn是神经网络的缩写\n",
    "\n",
    "net = nn.Sequential(nn.Linear(2, 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6bd2056-9dd5-47c1-8c77-9e0626484b1b",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "初始化模型参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f197ee0c-f05b-4470-9430-46127dd15228",
   "metadata": {
    "origin_pos": 24,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([0.])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net[0].weight.data.normal_(0, 0.01)\n",
    "net[0].bias.data.fill_(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0758d6e-a034-443d-9002-5c5ac5178e0a",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "计算均方误差使用的是`MSELoss`类，也称为平方$L_2$范数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "441fabfd-b551-4d3b-b2b6-aa1749d76e9e",
   "metadata": {
    "origin_pos": 34,
    "tab": [
     "pytorch"
    ],
    "tags": []
   },
   "outputs": [],
   "source": [
    "loss = nn.MSELoss()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "24c5b7e6-19fd-40bf-a554-13da0c3c450b",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "实例化一个`SGD`实例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "aad90c0a-d5b9-4486-8baa-e001b4ef9739",
   "metadata": {
    "origin_pos": 41,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [],
   "source": [
    "trainer = torch.optim.SGD(net.parameters(), lr=0.03)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c43537c5-ce8b-4587-8d77-9202abd47bf9",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "训练过程代码与我们从零开始实现时所做的非常相似"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "92b54dcc-bc68-4463-978b-ea86b285e742",
   "metadata": {
    "origin_pos": 45,
    "tab": [
     "pytorch"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 1, loss 0.000356\n",
      "epoch 2, loss 0.000104\n",
      "epoch 3, loss 0.000105\n"
     ]
    }
   ],
   "source": [
    "num_epochs = 3\n",
    "for epoch in range(num_epochs):\n",
    "    for X, y in data_iter:\n",
    "        l = loss(net(X) ,y)\n",
    "        trainer.zero_grad()\n",
    "        l.backward()\n",
    "        trainer.step()\n",
    "    l = loss(net(features), labels)\n",
    "    print(f'epoch {epoch + 1}, loss {l:f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "764227db-eac3-483c-827f-a3f009a4049d",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "比较生成数据集的真实参数和通过有限数据训练获得的模型参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "cc70dacd-d411-47c3-923e-59fda6975788",
   "metadata": {
    "origin_pos": 49,
    "tab": [
     "pytorch"
    ],
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w的估计误差： tensor([-0.0005,  0.0009])\n",
      "b的估计误差： tensor([-0.0008])\n"
     ]
    }
   ],
   "source": [
    "w = net[0].weight.data\n",
    "print('w的估计误差：', true_w - w.reshape(true_w.shape))\n",
    "b = net[0].bias.data\n",
    "print('b的估计误差：', true_b - b)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
